import { JSEncrypt } from 'jsencrypt'

function encryptResult(publicKey, data) {

  //new一个对象
  let encrypt = new JSEncrypt()
  //设置公钥
  encrypt.setPublicKey(publicKey)
  //password是要加密的数据,此处不用注意+号,因为rsa自己本身已经base64转码了,不存在+,全部是二进制数据
  let result = encrypt.encrypt(data)
  return result
}
function decryptData(privateKey, secretWord) {
  // 新建JSEncrypt对象
  let decrypt = new JSEncrypt()
  // 设置私钥
  decrypt.setPrivateKey(privateKey)
  // 解密数据
  let result = decrypt.decrypt(secretWord)
  return result
}
// 小数点2两位
const getDigit = (value = '', oldValue = '',f) => {
  try {
    let a = /^(([1-9]{1}\d*)|([0]{1}))(\.(\d){0,2})?$/;
    let b = a.test(value)
    let c = ''
	// debugger
    if (value === '') {
      c = value
    } else
      if (b) {
        c = value
      } else {
        c = !f?oldValue:Number(value)?Number(value).toFixed(f):value
      }
    return c
  } catch (err) {
    throw err
  }
}
const countMinPri = (carmoney,money)=>{
	   let pri = 0
		if(!carmoney){
			carmoney = 0
		}
		if(!money){
			money = 0
		}
		pri =Number(window.accSub(carmoney,money))?window.accSub(carmoney,money):0
		return  ((pri>0?'+':'')+Number(pri).toFixed(2)) || '--'
	}
const statusMortgage = ['审核中','审核通过','审核不通过','已撤销']
const belongbankList = ['中国建设银行', '中国银行', '中国工商银行', '平安银行', '广发银行', '中国邮政储蓄银行', '中国农业银行']

const iphoneTest=(val)=>{

	if((/^[1](([3][0-9])|([4][5-9])|([5][0-3,5-9])|([6][5,6])|([7][0-8])|([8][0-9])|([9][1,8,9]))[0-9]{8}$/.test(val))){
	// 　　　　alert("手机号码有误，请重填");
	　　　　return true;
	　　}
	return false
}
const getSplitColor=(waiguanyanse)=>{
let listColr = []
if(waiguanyanse){
	  waiguanyanse.split(';').map(list=>{
      var str = list.indexOf(':') !== -1 ? list.substr(0,list.indexOf(':')) : list
		 // arrColr.push(str)
		 listColr.push({status:false,color:str})
	  })
	}
	listColr.push({status:false,color:'不限'})
	return listColr
}

// 递归深拷贝
const _isObject = (obj = {}) => {
  let type = typeof obj;
  return type === 'function' || type === 'object' && !!obj;
}

const deepClone = (obj) => {
  if (!_isObject(obj)) return obj;
  var result = new obj.constructor();
  for (var i in obj) {
    if (obj.hasOwnProperty(i)) {
      result[i] = deepClone(obj[i]);
    }
  }
  return result;
}

// reduce实现
const myReduce = () => {
  Array.prototype.myreduce = function (callbackfn) {

  }
}

function getRad(d){
		   var PI = Math.PI;
		   return d*PI/180.0;
		}
function MapappendToBodyFn(){
	 try{
		if(!BMap){
			var script = document.createElement("script");
			//设置标签的type属性
			script.type = "text/javascript";

			//设置标签的链接地址
			script.src = "//api.map.baidu.com/api?v=2.0&ak=ePq0Qz5lmCsQgyLzu4DHaDxg0YPpLBuk&callback=__init__&time="+new Date().getTime();
			//添加标签到dom
			document.body.appendChild(script);
		}
	}catch(e){
		//TODO handle the exception
		var script = document.createElement("script");
			//设置标签的type属性
			script.type = "text/javascript";
			//设置标签的链接地址
			script.src = "//api.map.baidu.com/api?v=2.0&ak=ePq0Qz5lmCsQgyLzu4DHaDxg0YPpLBuk&callback=__init__&time="+new Date().getTime();
			//添加标签到dom
			document.body.appendChild(script);

			}
			// var script = document.createElement("script");
			// 	//设置标签的type属性
			// 	script.type = "text/javascript";
			// 	//设置标签的链接地址
			// 	script.src = "//api.map.baidu.com/api?v=2.0&ak=ePq0Qz5lmCsQgyLzu4DHaDxg0YPpLBuk&callback=__init__&time="+new Date().getTime();
			// 	//添加标签到dom
			// 	document.body.appendChild(script);

				 // }
	}



//两个坐标点的计算距离
const getDistance = ( lat1,  lng1,  lat2,  lng2)=>{
	   MapappendToBodyFn()
		/**
		 * 获取两个经纬度之间的距离
		 * @param lat1 第一点的纬度
		 * @param lng1 第一点的经度
		 * @param lat2 第二点的纬度
		 * @param lng2 第二点的经度
		 * @returns {Number}
		 */
		// console.log("坐标",lat1,  lng1,  lat2,  lng2)
		if(lat1&lng1&lat2&lng2){

		     var f = getRad((lat1 + lat2)/2);
		     var g = getRad((lat1 - lat2)/2);
		     var l = getRad((lng1 - lng2)/2);
		     var sg = Math.sin(g);
		     var sl = Math.sin(l);
		     var sf = Math.sin(f);
		     var s,c,w,r,d,h1,h2;
		     var a = 6378137.0;//The Radius of eath in meter.
		     var fl = 1/298.257;
		     sg = sg*sg;
		     sl = sl*sl;
		     sf = sf*sf;
		     s = sg*(1-sl) + (1-sf)*sl;
		     c = (1-sg)*(1-sl) + sf*sl;
		     w = Math.atan(Math.sqrt(s/c));
		     r = Math.sqrt(s*c)/w;
		     d = 2*w*a;
		     h1 = (3*r -1)/2/c;
		     h2 = (3*r +1)/2/s;
		     s = d*(1 + fl*(h1*sf*(1-sg) - h2*(1-sf)*sg));
		     s = s/1000;
		     if(!Number(s)) s = 0
		     s = Number(s.toFixed(2));//指定小数点后的位数。

			   }else{
				   s= 0
			   }
		     return s;

	}
const common = {
  getDigit,
  MapappendToBodyFn,
  deepClone,
  iphoneTest,
  myReduce,
  getDistance,
  belongbankList,
  encryptResult,
  decryptData,//解密
  statusMortgage,
  getSplitColor,
  countMinPri
}
export default common
